
// https://www.cnblogs.com/xuyiyixuan/p/7047191.html 
// function bubble(arr) {
//     for (let i = 0; i < arr.length; i++) {
//         for (let j = 0; j < arr.length - 1; j++) {
//             if(arr[j] > arr[j+1]){
//                 [arr[j],arr[j+1]] = [arr[j+1],arr[j]]
//             }
//         }
//     }
//     return arr
// }

// console.log(bubble([1,3,2,4,7,4,6])) 

// 优化方式 内层循环 len -i - 1  每轮都会比较出一个最大值，在最右侧 下一轮就不用比较了

// function bubble(arr) {
//     for (let i = 0; i < arr.length; i++) {
//         for (let j = 0; j < arr.length - i - 1; j++) {
//             if(arr[j] > arr[j+1]){
//                 [arr[j],arr[j+1]] = [arr[j+1],arr[j]]
//             }
//         }
//     }
//     return arr
// }

// console.log(bubble([1,3,2,4,7,4,6]))


// 时间复杂度 最好(O(n)) 最坏（O(n^2)）
// 怎么优化

function bubble(arr) {
    for (let i = 0; i < arr.length-1; i++) {
        let bool = true; 
        for (let j = 0; j < arr.length - 1; j++) {
            if(arr[j] > arr[j+1]){
                [arr[j],arr[j+1]] = [arr[j+1],arr[j]];
                bool = false;
            }
        }
        if(bool){
            break
        }
    }
    return arr
}

console.log(bubble([1,3,2,4,7,4,6])) 

// 比如 排序123
// 基础排序为2轮4次
// -i排序为2轮3次(它只舍去了第二轮循环的第二次比较)
// bool判断的话为:1轮2次 因为它进行一轮2次比较后发现下一轮没有可比较的了 直接退出循环 输出排序



